The present invention relates to computer memory systems, and more specifically, to autonomous dynamic random access memory (DRAM) scrub and error counting.
Error-correcting code (ECC) memory is a type of computer data storage that can detect and correct the most common kinds of internal data corruption. ECC memory is used in computer systems where data corruption cannot be tolerated, such as for scientific or financial computing. Typically, ECC memory maintains a memory system that is immune to single-bit-errors. Data that is read from each word is always the same as the data that had been written to it, even if one or more bits actually stored have been flipped to the wrong state. DRAM devices often include extra memory bits and logic to exploit these extra memory bits to correct single bit errors in a memory bit word.
In contemporary memory systems, a memory controller scans systematically through locations in a DRAM to perform a scrub operation on each memory location in the DRAM. Memory scrub operations include reading from a memory location in a memory device, correcting single bit errors (if any) in the read data with an ECC, and writing the corrected data back to the same memory location. During the scrub process, an ECC decoder that is internal to the DRAM is used to detect and correct bit errors. By scrubbing each memory location on a frequent enough basis, the probability of encountering uncorrectable multiple bit errors is reduced.